Programmable logic devices are popular general purpose logic devices. PLDs generally include an AND array that generates a large number of product term signals, which are input to an OR array. Within one type of PLD, a programmable logic array (PLA), both the AND array and the OR array are fully programmable. This means that every input to an array is distributed to every device within the array. The programmability of both arrays gives PLAs their design flexibility and contributes to their relative slowness. PLAs are relatively slow because two arrays must be sensed before an output signal is valid.
Programmable array logic devices (PALs) are also programmable logic devices and include an AND array and an OR array. PALs use fixed OR arrays to achieve a speed advantage as compared to PLAs. Within a fixed OR array every product term signal is not distributed to every OR device. Further, each product term signal is distributed to only one OR device within the OR array. This distribution scheme prevents both product term signal sharing and steering. Thus, PALs achieve their speed advantage as compared to PLAs by surrendering some design flexibility. This lack of flexibility leads to underutilization of PAL resources. For example, in a PAL including 125 product term signals, it is not uncommon for a design to use only 40 product term signals. Underutilization of PAL resources becomes problematical as PAL complexity increases while PAL size constraints remain the same. As a result, there is demand for a device that has the speed advantages of a PAL yet offers the flexibility of a PLA.
Advanced Micro Devices attempted to meet this demand with its MACH family of devices. These devices include a programmable AND array and a fixed OR array. MACH devices include multiplexors, called logic allocators, coupled between the AND array and the OR array. Logic allocators allow steering of small groups of product term signals between OR devices in return for a small speed penalty. Thus, MACH devices do not permit product term signal steering with a granularity of one.
Altera also attempted to meet the demand for fast and flexible PLDs with its MAX family of devices. Max devices include shared expanders which allow product term signal sharing within a fixed OR array. Shared expanders feed the output of one OR device to the input of another OR device. Note that Max devices do not allow product term signal sharing with a granularity of one.
Additionally, shared expanders provide increased flexibility at the expense of a small speed penalty.